/*
    日志消息类：描述一条日志信息需要包含的内容
    行号/时间/线程ID/日志器名称/文件名/日志消息/日志等级
*/
#ifndef __M_MESSAGE_H__
#define __M_MESSAGE_H__
#include <iostream>
#include <string>
#include <memory>
#include <thread>
#include "level.hpp"
#include "util.hpp"
namespace zxlog
{
    // 类里面的成员都为公有，因此可以使用struct，而不用class
    struct LogMsg
    {
        using ptr = std::shared_ptr<LogMsg>;
        size_t _line;           // 行号
        time_t _ctime;          // 时间
        std::thread::id _pid;   // 线程ID
        std::string _name;      // 日志器名称
        std::string _file;      // 文件名
        std::string _payload;   // 日志消息
        LogLevel::Value _level; // 日志等级
        LogMsg(const std::string file, size_t line, const std::string name, const std::string payload,
               LogLevel::Value level) : _file(file),
                                        _line(line),
                                        _ctime(util::now()),
                                        _name(name),
                                        _pid(std::this_thread::get_id()),
                                        _payload(payload),
                                        _level(level)
        {
        }
        ~LogMsg() {}
    };
}
#endif